#include<bits/stdc++.h>
using namespace std;
using ll = long long;

ll n,m;
string s1[100010],s2[1010];
map<string,vector<string>> mp;
int main()
{
	cin >> n;getchar();
	for(ll i=1;i<=n;i++)
	{
		getline(cin,s1[i]);
	}
	cin >> m;getchar();
	for(ll i=1;i<=m;i++)
	{
		getline(cin,s2[i]);
	}


	for(ll i=1;i<=n;i++)
	{
		//cout<<s1[i]<<endl;
		string st;
		if(s1[i][0]!=' ')
		st+=s1[i][0];
		for(size_t j=1;j<s1[i].size();j++)
		{
			if(s1[i][j-1]==' '&&s1[i][j]!=' ')
			{
				st+=s1[i][j];
			}
		}
		mp[st].push_back(s1[i]);
	}

//	for(auto [x,y]:mp)
//	{
//		for (ll i = 0; i < y.size();i++)
//		{
//			cout << x << " " << y[i] << endl;
//		}
//	}

	 for(ll i=1;i<=m;i++)
	 {
	 	//cout<<s2[i]<<endl;
	 	string st;
		if(s2[i][0]!=' ')
	 	st+=s2[i][0];
	 	for(size_t j=1;j<s2[i].size();j++)
	 	{
	 		if(s2[i][j-1]==' '&&s2[i][j]!=' ')
	 		{
	 			st+=s2[i][j];
	 		}
	 	}
//	 	cout<<st<<endl;
		if(mp[st].size()==0){
			cout<<s2[i];//TODO
		}
		else {
			sort(mp[st].begin(),mp[st].end());
			for(ll j=0;j<mp[st].size();j++)
			{
				if(j!=mp[st].size()-1)
				{
					cout<<mp[st][j]<<"|";
				}
				else 
				{
					cout<<mp[st][j];
				}
			}
		}
		cout<<endl;
	 }
	
	return 0;
}
